package com.zeus.config;

import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 冯扬龙
 * @date 2021/6/7 9:34
 * //shiro当设置权限以后不会跳到默认的登录页面，springsecurity有一个默认的登录界面就可以跳到默认的登录页面
 * #shiro三大对象，realm连接数据，用来认证 subject也就是拦截器，过滤器， securityManager管理所有用户，也叫授权，subject对应ShiroFilterFactoryBean
 * DefaultWebSecurityManager对应securitymanager,UserRealm对应realm
 *
 *
 */
@Configuration
public class ShiroConfig {


////获取ShiroFilterFactoryBean，实现用户拦截路径
//    @Bean
//    public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager){
//        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
////        设置安全管理器
//        shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
//
///*设置拦截器 五个属性 anon-无需认证就可以访问
//            authc-必须认证了才可以访问
//            user-必须拥有记住我功能才可以访问
//            perms-拥有对某个资源的权限才可以访问
//            role-拥有某个角色的权限才可以访问*/
//    Map<String,String> map = new HashMap<String,String>();
////    键放的是需要设置访问权限的路径,也就是你在浏览器需要输入的路径也就是requestMapping里放的路径，或者也可以把路径合并比如map.put("/add/*","authc");add请求路径下的所有请求
////    这里表示的是当你在请求add路径的时候，必须是登录状态也就是已经认证过了
//        map.put("/add","authc");
//    map.put("/update","authc");
//
////  拓展，授权功能，给指定用户进行授权，未经授权的用户要跳到指定的页面,map的键指的是requestmapping里的参数
////        user:add就是一种写法，规定的写法
//    map.put("/add","perms[user:add]");
//
//    shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
//// 这里的意思就是说假如经过上面设置的路径被拦截时我总要有个去处要跳转到哪里去，这个就是设置跳转的地方，这里是跳转到登录界面，意思其实也就是说你没有权限进入上面被拦截的那些界面，参数里写的是requestMapping里的参数
//    shiroFilterFactoryBean.setLoginUrl("/toLogin");
//        //没授权跳到指定授权的位置
//    shiroFilterFactoryBean.setUnauthorizedUrl("/404");
//    return shiroFilterFactoryBean;
//    }
//
////获取DefaultWebSecurityManager
//    @Bean(name = "SecurityManager")
//    public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
//        DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
//        defaultWebSecurityManager.setRealm(userRealm);
//        return defaultWebSecurityManager;
//    }
//
////获取UserRealm，实现用户认证
//    @Bean(name = "userRealm")
//    public UserRealm userRealm(){
//        return new UserRealm();
//    }

}
